// LightBulbWidget.h
#ifndef LIGHTBULBWIDGET_H
#define LIGHTBULBWIDGET_H

#include <QWidget>
#include <QDrag>
#include <QMimeData>
#include <QPainter>


class LightBulbWidget : public QWidget {
    //Q_OBJECT

public:
    explicit LightBulbWidget(QWidget *parent = nullptr)
        : QWidget(parent) {
        setFixedSize(40, 40);  // 设置控件大小
        //setAutoFillBackground(true);  // 设置背景填充
        light=false;
    }
    QRectF boundingRect(){
        return QRectF(0, 0, 40, 40);  // 灯泡的大小
    }
    void paintEvent(QPaintEvent *event) override
    {
        QPainter painter(this);

        // 设置抗锯齿
        painter.setRenderHint(QPainter::Antialiasing);

        // 设置笔触和颜色
        painter.setPen(QPen(Qt::black, 1));

        // 设置画刷为红色
        if(light==true)
        {
            painter.setBrush(Qt::yellow);
        }
        // 圆的中心和半径
        QPoint center = boundingRect().center().toPoint();
        int radius = boundingRect().width() / 4; // 使用boundingRect的宽度来确定半径

        // 绘制一个圆
        painter.drawEllipse(center, radius, radius);

        // 绘制圆周上的小线段
        int segmentCount = 6;  // 设置圆周上小线段的数量
        for (int i = 0; i < segmentCount; ++i) {
            // 计算每个小线段的位置
            double angle = (i * 2 * M_PI) / segmentCount;

            // 圆周上线段的起始点
            QPoint startPoint(center.x() + radius * cos(angle), center.y() + radius * sin(angle));
            // 小线段的方向：向外
            QPoint endPoint(center.x() + (radius + 5) * cos(angle), center.y() + (radius + 5) * sin(angle));

            // 绘制小线段
            painter.drawLine(startPoint, endPoint);
        }


        // 绘制圆形的文本
        painter.drawText(boundingRect(), Qt::AlignCenter, "Light");
    }
    void setLight()
    {
        light=!light;
    }


protected:
    void mousePressEvent(QMouseEvent *event) override
    {
        // 确保不拦截父类的事件
        QWidget::mousePressEvent(event);

    }
    // 鼠标松开事件：在 QGraphicsView 放置元件
    void mouseMoveEvent(QMouseEvent *event) override {

        // 确保不拦截父类的事件
        QWidget::mouseMoveEvent(event);
    }
    // 鼠标松开事件：在 QGraphicsView 放置元件
    void mouseReleaseEvent(QMouseEvent *event) override {

        // 确保不拦截父类的事件
        QWidget::mouseReleaseEvent(event);
        qDebug()<<"释放";
    }

private:
    bool light;
};

#endif // LIGHTBULBWIDGET_H

